﻿#ifndef DEFINE_H
#define DEFINE_H

#pragma execution_character_set("utf-8")

struct PARAMS_VAR{
    int             DeviceType;
    int             DeviceScanType;
    char            FactoryName[64];
    char            DeviceModel[64];
    char            Serials[64];
    char            ParamVersion[64];
    int             DeviceUptime;
    //图像
    int             WidthMax;
    int             HeightMax;
    int             Width;
    int             Height;
    int             OffsetX;
    int             OffsetY;
    //采集模式，采集帧数，行频设置，实际行频，实际帧率
    int             AcquisitionMode;
    int             AcquisitionBurstFrameCount;
    int             AcquisitionLineRate;
    bool            AcquisitionLineRateEnable;
    int             ResultingLineRate;
    float           ResultingFrameRate;
    float           DeviceLinkSpeed;
    int             ImageNums;
    int             ErrorNums;
    int             LostNums;
    //曝光
    float           ExposureTime;
    float           ExposureTimeMin;
    float           ExposureTimeMax;

    // int             Flip;
    // int             FlipMin;
    // int             FlipMax;
    // int             Mirror;
    // int             MirrorMin;
    // int             MirrorMax;

    // char            LabelContrast[16];
    // int             Contrast;
    // int             ContrastMin;
    // int             ContrastMax;

    // char            LabelBrightness[16];
    // int             Brightness;
    // int             BrightnessMin;
    // int             BrightnessMax;

    // char            LabelSaturation[16];
    // int             Saturation;
    // int             SaturationMin;
    // int             SaturationMax;

    // char            LabelGamma[16];
    // int             Gamma;
    // int             GammaMin;
    // int             GammaMax;

    //行触发：触发选择-LineStart，触发模式-On，触发源-FrequencyConverter ，触发-RisingEdge
    int             TriggerSelector;
    bool            TriggerMode;
    int             TriggerSource;
    int             TriggerActivation;
    //编码控制:编码器选择-Encode0，编码A源选择-Line0，编码B源选择-Line3，编码触发模式-BackwardOnly，编码计数模式-IgnoreDirection，计数器，计数最大值-10000
    int             EncoderSelector;
    int             EncoderSourceA;
    int             EncoderSourceB;
    int             EncoderTriggerMode;
    int             EncoderCounterMode;
    int             EncoderCounter;
    int             EncoderCounterMax;
    //分频控制：分频器输入源-EncodeModuleOut，分频器信号方向-RisingEdge，前置调节-1，倍频调节-1，后置调节-1
    int             InputSource;
    int             SignalAlignment;
    int             PreDivider;
    int             Multiplier;
    int             PostDivider;
    //平场矫正：校正选择-PRNUCCorrection，平场使能-Off，
    int             ShadingSelector;
    bool            PRNUCROIEnable;
    bool            PRNUCUSEREnable;
    //图像格式
    int             ImageFormat;
    //用户参数
    int             UserSetCurrent;
    int             UserSetSelector;
    int             UserSetDefault;

};

/***  线性扫描 升级更新记录
 * 2024.5.23：
 *      设计UI，相机参数
 *
 * 2024.7.1：相机设置，采集，自拍；镜头调整；基本完成
 *
 * 2024.7.4：设置相机行触发，输入源为编码，未触发-不稳定；开启触发-图像压缩，调整倍频器，图像基本正常；判断自拍自停功能；
 *                  图像光线不均匀，胶片和镜头不居中，需要调节镜头位置，光源需要稳定；
 *                  要实现：线程调试：记录每帧信息日志，存储图像文件；
 * 2024.7.5：线程调试：帧日志存储，图像文件存储；
 *                  要实现：目录管理，文件管理；
 * 2024.7.8：目录管理，文件显示；
 *                  要实现：图像文件存储；
 * 2024.7.9：图像文件存储，动态生成列表；
 *                  要实现：图像放大，使用鼠标滚轮；
 * 2024.7.15:静态图像放大通过；动态图像放大：申请/释放/清除/图像；
 *          注释：灯光不均匀，有黑影
 *          测试自拍：   图像格式，    行频，   曝光，   速度
 *                      0           5000    180     3500
 *                      0           4000    180     2800
 *                      0           6000    180     4200
 *
 * 2024.7.16 采集处理设计：轮廓参数，处理位置，自动处理；
 *           轮廓参数：二值化阈值，高斯；最小轮廓，边界，最大宽度；
 *
 * 2024.7.26 采集处理：切图，续接，自动处理；测试
 *           要实现：自拍+自动处理；
***/

#endif // DEFINE_H
